// package com.foodcommunity.controller;
//
// import com.foodcommunity.dto.DataAnalysisDTO;
// import com.foodcommunity.dto.FoodPostDTO;
// import com.foodcommunity.entity.FoodPost;
// import com.foodcommunity.entity.Restaurant;
// import com.foodcommunity.entity.RestaurantReview;
// import com.foodcommunity.entity.User;
// import com.foodcommunity.service.DataAnalysisService;
// import com.foodcommunity.service.FoodPostService;
// import com.foodcommunity.service.RestaurantService;
// import com.foodcommunity.service.UserService;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Controller;
// import org.springframework.ui.Model;
// import org.springframework.web.bind.annotation.GetMapping;
// import org.springframework.web.bind.annotation.PathVariable;
// import org.springframework.web.bind.annotation.RequestParam;
//
// import javax.servlet.http.HttpSession;
// import java.util.HashMap;
// import java.util.List;
// import java.util.Map;
//
// /**
//  * Web页面控制器
//  */
// @Controller
// public class WebController {
//
//     @Autowired
//     private RestaurantService restaurantService;
//
//     @Autowired
//     private FoodPostService foodPostService;
//
//     @Autowired
//     private DataAnalysisService dataAnalysisService;
//
//     @Autowired
//     private UserService userService;
//
//     @Autowired
//     private CommentService commentService;
//
//     /**
//      * 首页
//      */
//     @GetMapping("/")
//     public String index(Model model) {
//         // 获取热门餐厅
//         List<Restaurant> hotRestaurants = restaurantService.getHotRestaurants();
//         model.addAttribute("hotRestaurants", hotRestaurants);
//
//         // 获取热门美食日记
//         List<FoodPostDTO> hotPosts = foodPostService.getHotPosts();
//         model.addAttribute("hotPosts", hotPosts);
//
//         return "index";
//     }
//
//     /**
//      * 美食分类页
//      */
//     @GetMapping("/category")
//     public String category(Model model) {
//         // 这里可以添加获取分类数据的逻辑
//         // 暂时返回一个简单的分类页面
//         return "category/list";
//     }
//
//     /**
//      * 美食日记列表页
//      */
//     @GetMapping("/posts")
//     public String posts(
//             @RequestParam(defaultValue = "1") int page,
//             @RequestParam(defaultValue = "12") int size,
//             @RequestParam(required = false) String category,
//             @RequestParam(required = false, defaultValue = "latest") String sort,
//             Model model) {
//
//         // 获取美食日记列表
//         List<FoodPostDTO> posts = foodPostService.getMorePosts(page, size);
//         model.addAttribute("posts", posts);
//         model.addAttribute("currentPage", page);
//         model.addAttribute("totalPages", 3); // 暂时设置为3页，实际应该从服务层获取
//         model.addAttribute("category", category);
//         model.addAttribute("sort", sort);
//
//         return "post/list";
//     }
//
//     /**
//      * 美食日记详情页
//      */
//     @GetMapping("/post/{id}")
//     public String postDetail(@PathVariable Long id, Model model) {
//         // 获取帖子详情
//         Result<FoodPost> result = foodPostService.getPostDetail(id);
//         if (result.isSuccess()) {
//             FoodPost post = result.getData();
//             
//             // 获取作者信息
//             User author = userService.getUserById(post.getUserId());
//             if (author != null) {
//                 model.addAttribute("authorName", author.getNickname() != null ? author.getNickname() : author.getUsername());
//                 model.addAttribute("authorAvatar", author.getAvatar());
//             }
//             
//             // 处理第一张图片
//             if (post.getImages() != null && !post.getImages().isEmpty()) {
//                 String firstImage = post.getImages().split(",")[0];
//                 model.addAttribute("firstImage", firstImage);
//             }
//             
//             model.addAttribute("post", post);
//             
//             // 增加浏览量
//             foodPostService.incrementViews(id);
//             
//             // 获取评论列表
//             List<Comment> comments = commentService.getPostComments(id);
//             model.addAttribute("comments", comments);
//             model.addAttribute("commentCount", comments.size());
//             
//             // 获取相关文章
//             List<FoodPostDTO> relatedPosts = foodPostService.getRelatedPosts(id, 3);
//             model.addAttribute("relatedPosts", relatedPosts);
//         }
//         
//         return "post/detail";
//     }
//
//     /**
//      * 餐厅列表页
//      */
//     @GetMapping("/restaurant")
//     public String restaurantList(
//             @RequestParam(required = false) String cuisineType,
//             @RequestParam(required = false) Integer minPrice,
//             @RequestParam(required = false) Integer maxPrice,
//             @RequestParam(required = false) Double minRating,
//             @RequestParam(defaultValue = "1") int page,
//             @RequestParam(defaultValue = "12") int size,
//             Model model) {
//
//         Map<String, Object> result = restaurantService.getRestaurantsByCondition(
//                 cuisineType, minPrice, maxPrice, minRating, page, size);
//
//         model.addAttribute("restaurants", result.get("restaurants"));
//         model.addAttribute("totalPages", result.get("totalPages"));
//         model.addAttribute("currentPage", page);
//
//         return "restaurant/list";
//     }
//
//     /**
//      * 餐厅详情页
//      */
//     @GetMapping("/restaurant/{id}")
//     public String restaurantDetail(
//             @PathVariable Long id,
//             @RequestParam(defaultValue = "1") int page,
//             @RequestParam(defaultValue = "10") int size,
//             Model model,
//             HttpSession session) {
//
//         // 获取餐厅详情
//         Restaurant restaurant = restaurantService.getRestaurantDetail(id).getData();
//         model.addAttribute("restaurant", restaurant);
//
//         // 获取餐厅评论
//         Map<String, Object> reviewsResult = restaurantService.getRestaurantReviewsWithPage(id, page, size);
//         model.addAttribute("reviews", reviewsResult.get("reviews"));
//         model.addAttribute("totalPages", reviewsResult.get("totalPages"));
//         model.addAttribute("currentPage", page);
//
//         // 获取推荐餐厅
//         User user = (User) session.getAttribute("user");
//         List<Map<String, Object>> recommendations;
//         if (user != null) {
//             // 根据用户偏好推荐
//             recommendations = dataAnalysisService.getRecommendedRestaurants(user.getId(), 5);
//         } else {
//             // 获取热门餐厅
//             recommendations = dataAnalysisService.getHotRestaurantRanking(5);
//         }
//         model.addAttribute("recommendations", recommendations);
//
//         return "restaurant/detail";
//     }
//
//     /**
//      * 餐厅地图页
//      */
//     @GetMapping("/restaurant/map")
//     public String restaurantMap() {
//         return "restaurant/map";
//     }
//
//     /**
//      * 数据分析页
//      */
//     @GetMapping("/analysis")
//     public String analysis(Model model, HttpSession session) {
//         // 获取总体数据分析
//         DataAnalysisDTO analysis = dataAnalysisService.getOverallAnalysis();
//         model.addAttribute("analysis", analysis);
//
//         // 获取热门餐厅排行榜
//         List<Map<String, Object>> hotRestaurants = dataAnalysisService.getHotRestaurantRanking(10);
//         model.addAttribute("hotRestaurants", hotRestaurants);
//
//         // 获取热门美食日记排行榜
//         List<Map<String, Object>> hotPosts = dataAnalysisService.getHotFoodRanking(10);
//         model.addAttribute("hotPosts", hotPosts);
//
//         // 获取统计数据
//         // 餐厅总数
//         int totalRestaurants = 0;
//         try {
//             Map<String, Object> restaurantResult = restaurantService.getRestaurantsByCondition(null, null, null, null, 1, 1);
//             if (restaurantResult.containsKey("total")) {
//                 totalRestaurants = ((Number) restaurantResult.get("total")).intValue();
//             }
//         } catch (Exception e) {
//             totalRestaurants = 0;
//         }
//
//         // 帖子总数 - 由于没有getPostsWithPage方法，我们尝试从其他地方获取
//         int totalPosts = 0;
//         try {
//             // 尝试从数据分析服务获取帖子总数
//             if (analysis != null && analysis.getCategoryStats() != null && !analysis.getCategoryStats().isEmpty()) {
//                 // 计算所有分类的帖子总数
//                 totalPosts = analysis.getCategoryStats().stream()
//                         .mapToInt(map -> ((Number) map.getOrDefault("post_count", 0)).intValue())
//                         .sum();
//             }
//         } catch (Exception e) {
//             totalPosts = 0;
//         }
//
//         // 评论总数
//         int totalReviews = 0;
//         try {
//             // 尝试从数据分析获取评论总数
//             if (analysis != null && analysis.getMonthlyTrends() != null && !analysis.getMonthlyTrends().isEmpty()) {
//                 // 计算所有月份的评论总数
//                 totalReviews = analysis.getMonthlyTrends().stream()
//                         .mapToInt(map -> ((Number) map.getOrDefault("comment_count", 0)).intValue())
//                         .sum();
//             }
//         } catch (Exception e) {
//             totalReviews = 0;
//         }
//
//         // 用户总数
//         int totalUsers = 0;
//         try {
//             // 尝试从数据分析获取用户总数
//             if (analysis != null && analysis.getUserActivityStats() != null) {
//                 totalUsers = analysis.getUserActivityStats().size();
//             }
//         } catch (Exception e) {
//             totalUsers = 0;
//         }
//
//         model.addAttribute("totalRestaurants", totalRestaurants);
//         model.addAttribute("totalPosts", totalPosts);
//         model.addAttribute("totalReviews", totalReviews);
//         model.addAttribute("totalUsers", totalUsers);
//
//         // 获取用户个性化推荐
//         User user = (User) session.getAttribute("user");
//         if (user != null) {
//             // 获取用户偏好
//             Map<String, Object> userPreferences = dataAnalysisService.getUserPreferences(user.getId());
//             model.addAttribute("userPreferences", userPreferences);
//
//             // 获取推荐餐厅
//             List<Map<String, Object>> recommendedRestaurants = dataAnalysisService.getRecommendedRestaurants(user.getId(), 3);
//             model.addAttribute("recommendedRestaurants", recommendedRestaurants);
//
//             // 获取推荐美食日记
//             List<Map<String, Object>> recommendedPosts = dataAnalysisService.getRecommendedPosts(user.getId(), 3);
//             model.addAttribute("recommendedPosts", recommendedPosts);
//         }
//
//         return "analysis/dashboard";
//     }
//
//     /**
//      * 用户个人资料页
//      */
//     @GetMapping("/user/profile")
//     public String userProfile(HttpSession session, Model model) {
//         User user = (User) session.getAttribute("user");
//         if (user == null) {
//             return "redirect:/login";
//         }
//
//         model.addAttribute("user", user);
//         return "user/profile";
//     }
//
//     /**
//      * 用户发布的文章页
//      */
//     @GetMapping("/user/posts")
//     public String userPosts(HttpSession session, Model model) {
//         User user = (User) session.getAttribute("user");
//         if (user == null) {
//             return "redirect:/login";
//         }
//
//         List<FoodPost> posts = foodPostService.getUserPosts(user.getId());
//         model.addAttribute("posts", posts);
//         return "user/posts";
//     }
//
//     /**
//      * 登录页
//      */
//     @GetMapping("/login")
//     public String login() {
//         return "login";
//     }
//
//     /**
//      * 注册页
//      */
//     @GetMapping("/register")
//     public String register() {
//         return "register";
//     }
// }